package fr.bludwarf.skywarrior.ile;

import fr.bludwarf.skywarrior.exceptions.CoordonneesInconnues;
import fr.bludwarf.skywarrior.global.Coords;
import fr.bludwarf.skywarrior.global.Entite;
import fr.bludwarf.skywarrior.joueur.Joueur;

public class Ile extends Entite {

	/** Propriétaire de l'île */
	private Joueur _joueur = null;
	
	/** Coordonnée de l'ile */
	private Coords _coords = null;

	public Ile(String nom, final Joueur joueur) {
		super(nom);
		_joueur = joueur;
	}

	/**
	 * Ile vierge
	 * @param nom nom de l'ile
	 */
	public Ile(String nom) {
		super(nom);
	}

	public Ile(final String nom, final int x, final int y) {
		super(nom);
		_coords = new Coords(x, y);
	}

	public boolean ilePrincipale() {
		return this == _joueur.getIlePrincipale();
	}
	
	@Override
	public String toString() {
		return _nom;
	}

	public Joueur getJoueur() {
		return _joueur;
	}

	public double distance(final Ile ile) throws CoordonneesInconnues {
		if (_coords == null)
		{
			throw new CoordonneesInconnues(this);
		}
		else if (ile._coords == null) 
		{
			throw new CoordonneesInconnues(ile);
		}
		else
		{
			return _coords.distance(ile._coords);
		}
	}

}
